﻿using System;
using System.ComponentModel;
using System.Runtime.InteropServices;

namespace Teigha.Core
{
	public class OdGiWebLightTraitsData : OdGiPointLightTraitsData
	{
		[EditorBrowsable(EditorBrowsableState.Never)]
		public OdGiWebLightTraitsData(IntPtr cPtr, bool cMemoryOwn) : base(GlobalsPINVOKE.OdGiWebLightTraitsData_SWIGUpcast(cPtr), cMemoryOwn)
		{
			this.swigCPtr = new HandleRef(this, cPtr);
		}

		[EditorBrowsable(EditorBrowsableState.Never)]
		public static HandleRef getCPtr(OdGiWebLightTraitsData obj)
		{
			if (obj != null)
			{
				return obj.swigCPtr;
			}
			return new HandleRef(null, IntPtr.Zero);
		}

		~OdGiWebLightTraitsData()
		{
			this.Dispose();
		}

		public override void Dispose()
		{
			if (this.swigCPtr.Handle != IntPtr.Zero)
			{
				if (this.swigCMemOwn)
				{
					lock (this.locker)
					{
						if (this.swigCPtr.Handle != IntPtr.Zero && this.swigCMemOwn)
						{
							this.swigCMemOwn = false;
							GlobalsPINVOKE.delete_OdGiWebLightTraitsData(this.swigCPtr);
						}
					}
					this.swigCMemOwn = false;
				}
				this.swigCPtr = new HandleRef(null, IntPtr.Zero);
			}
			GC.SuppressFinalize(this);
			base.Dispose();
		}

		public OdGiWebLightTraitsData() : this(GlobalsPINVOKE.new_OdGiWebLightTraitsData(), true)
		{
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public string webFile()
		{
			string result = GlobalsPINVOKE.OdGiWebLightTraitsData_webFile(this.swigCPtr);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public void setWebFile(string fileName)
		{
			GlobalsPINVOKE.OdGiWebLightTraitsData_setWebFile(this.swigCPtr, fileName);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public OdGeVector3d webRotation()
		{
			OdGeVector3d result = new OdGeVector3d(GlobalsPINVOKE.OdGiWebLightTraitsData_webRotation(this.swigCPtr), true);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public void setWebRotation(OdGeVector3d rot)
		{
			GlobalsPINVOKE.OdGiWebLightTraitsData_setWebRotation(this.swigCPtr, OdGeVector3d.getCPtr(rot));
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public double webFlux()
		{
			double result = GlobalsPINVOKE.OdGiWebLightTraitsData_webFlux(this.swigCPtr);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public void setWebFlux(double flux)
		{
			GlobalsPINVOKE.OdGiWebLightTraitsData_setWebFlux(this.swigCPtr, flux);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public OdGiWebLightTraits.WebFileType webFileType()
		{
			OdGiWebLightTraits.WebFileType result = (OdGiWebLightTraits.WebFileType)GlobalsPINVOKE.OdGiWebLightTraitsData_webFileType(this.swigCPtr);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public void setWebFileType(OdGiWebLightTraits.WebFileType type)
		{
			GlobalsPINVOKE.OdGiWebLightTraitsData_setWebFileType(this.swigCPtr, (int)type);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public OdGiWebLightTraits.WebSymmetry webSymmetry()
		{
			OdGiWebLightTraits.WebSymmetry result = (OdGiWebLightTraits.WebSymmetry)GlobalsPINVOKE.OdGiWebLightTraitsData_webSymmetry(this.swigCPtr);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public void setWebSymmetry(OdGiWebLightTraits.WebSymmetry sym)
		{
			GlobalsPINVOKE.OdGiWebLightTraitsData_setWebSymmetry(this.swigCPtr, (int)sym);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public bool webHorzAng90to270()
		{
			bool result = GlobalsPINVOKE.OdGiWebLightTraitsData_webHorzAng90to270(this.swigCPtr);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public void setWebHorzAng90to270(bool bHA)
		{
			GlobalsPINVOKE.OdGiWebLightTraitsData_setWebHorzAng90to270(this.swigCPtr, bHA);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		private object locker = new object();

		private HandleRef swigCPtr;
	}
}
